<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1" />
<meta name="generator" content="pdoc 0.10.0" />
<title>Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main API documentation</title>
<meta name="description" content="" />
<link rel="preload stylesheet" as="style" href="https://cdnjs.cloudflare.com/ajax/libs/10up-sanitize.css/11.0.1/sanitize.min.css" integrity="sha256-PK9q560IAAa6WVRRh76LtCaI8pjTJ2z11v0miyNNjrs=" crossorigin>
<link rel="preload stylesheet" as="style" href="https://cdnjs.cloudflare.com/ajax/libs/10up-sanitize.css/11.0.1/typography.min.css" integrity="sha256-7l/o7C8jubJiy74VsKTidCy1yBkRtiUGbVkYBylBqUg=" crossorigin>
<link rel="stylesheet preload" as="style" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.1.1/styles/ir-black.min.css" crossorigin>
<style>
:root {
--highlight-color: #202;
}
html {
scrollbar-face-color: #646464;
scrollbar-base-color: #646464;
scrollbar-3dlight-color: #646464;
scrollbar-highlight-color: #646464;
scrollbar-track-color: #000;
scrollbar-arrow-color: #000;
scrollbar-shadow-color: #646464;
scrollbar-dark-shadow-color: #646464;
}
::-webkit-scrollbar { width: 14px; height: 3px;}
::-webkit-scrollbar-button {
background-color: #000;
height: 3px;}
::-webkit-scrollbar-track {
background-color: #646464;}
::-webkit-scrollbar-track-piece { background-color: #000;}
::-webkit-scrollbar-thumb { height: 50px; background-color: #666; border-radius: 7px;}
::-webkit-scrollbar-corner { background-color: #646464;}
::-webkit-resizer { background-color: #666;}
.flex {
display: flex !important;
}
body {
line-height: 1.5em;
color: #fff;
background-color: #1e1e1e;
font: 14px/1.5 Helvetica, Arial, sans-serif;
margin: 0;
padding: 0;
}
#content {
padding: 20px;
}
#sidebar {
padding: 30px;
overflow: hidden;
}
#sidebar>*:last-child {
margin-bottom: 2cm;
}
.http-server-breadcrumbs {
font-size: 130%;
margin: 0 0 15px 0;
}
#footer {
font-size: .75em;
padding: 5px 30px;
border-top: 1px solid #fff;
text-align: right;
}
#footer p {
margin: 0 0 0 1em;
display: inline-block;
}
#footer p:last-child {
margin-right: 30px;
}
h1,
h2,
h3,
h4,
h5 {
font-weight: 300;
color: #fff;
}
h1 {
font-size: 2.5em;
line-height: 1.1em;
}
h2 {
font-size: 1.75em;
margin: 1em 0 .50em 0;
}
h3 {
font-size: 1.4em;
margin: 25px 0 10px 0;
}
h4 {
margin: 0;
font-size: 105%;
}
h1:target,
h2:target,
h3:target,
h4:target,
h5:target,
h6:target {
background: #1e1e1e;
padding: 0.2em 0;
}
a {
color: #8fd6fc;
text-decoration: none;
transition: color .3s ease-in-out;
}
a:hover {
color: #00a4fc;
}
.title code {
font-weight: bold;
}
h2[id^="header-"] {
margin-top: 2em;
}
.ident {
color: #f6fc85;
}
strong {
color: #8fd6fc;
}
pre code {
background: transparent;
font-size: .8em;
line-height: 1.4em;
}
code {
background: rgba(255, 255, 255, 0.1);
padding: 1px 4px;
overflow-wrap: break-word;
}
h1 code {
background: transparent
}
pre {
background: transparent;
border: 0;
border-top: 1px solid #ccc;
border-bottom: 1px solid #ccc;
margin: 1em 0;
padding: 1ex;
}
#http-server-module-list {
display: flex;
flex-flow: column;
}
#http-server-module-list div {
display: flex;
}
#http-server-module-list dt {
min-width: 10%;
}
#http-server-module-list p {
margin-top: 0;
}
.toc ul,
#index {
list-style-type: none;
margin: 0;
padding: 0;
}
#index code {
background: transparent;
}
#index h3 {
border-bottom: 1px solid #ddd;
}
#index ul {
padding: 0;
}
#index h4 {
margin-top: .6em;
font-weight: bold;
}
/* Make TOC lists have 2+ columns when viewport is wide enough.
Assuming ~20-character identifiers and ~30% wide sidebar. */
@media (min-width: 200ex) {
#index .two-column {
column-count: 2
}
}
@media (min-width: 300ex) {
#index .two-column {
column-count: 3
}
}
dl {
margin-bottom: 2em;
}
dl dl:last-child {
margin-bottom: 4em;
}
dd {
margin: 0 0 1em 3em;
}
#header-classes+dl>dd {
margin-bottom: 3em;
}
dd dd {
margin-left: 2em;
}
dd p {
margin: 10px 0;
}
.name {
background: #000;
font-weight: bold;
font-size: .85em;
padding: 5px 10px;
display: inline-block;
min-width: 40%;
}
.name:hover {
background: #0b0b0b;
}
dt:target .name {
background: var(--highlight-color);
}
.name>span:first-child {
white-space: nowrap;
}
.name.class>span:nth-child(2) {
margin-left: .4em;
}
.inherited {
color: #999;
border-left: 5px solid #eee;
padding-left: 1em;
}
.inheritance em {
font-style: normal;
font-weight: bold;
}
.pydefname {
color: #f90;
}
/* Docstrings titles, e.g. in numpydoc format */
.desc h2 {
font-weight: 400;
font-size: 1.25em;
}
.desc h3 {
font-size: 1em;
}
.desc dt code {
background: inherit;
/* Don't grey-back parameters */
}
.source summary,
.git-link-div {
color: #666;
text-align: right;
font-weight: 400;
font-size: .8em;
text-transform: uppercase;
}
.source summary>* {
white-space: nowrap;
cursor: pointer;
}
.git-link {
color: inherit;
margin-left: 1em;
}
.source pre {
max-height: 500px;
overflow: auto;
margin: 0;
}
.source pre code {
font-size: 12px;
overflow: visible;
}
.hlist {
list-style: none;
}
.hlist li {
display: inline;
}
.hlist li:after {
content: ',\2002';
}
.hlist li:last-child:after {
content: none;
}
.hlist .hlist {
display: inline;
padding-left: 1em;
}
img {
max-width: 100%;
}
td {
padding: 0 .5em;
}
.admonition {
padding: .1em .5em;
margin-bottom: 1em;
}
.admonition-title {
font-weight: bold;
}
.admonition.note,
.admonition.info,
.admonition.important {
background: #00a;
}
.admonition.todo,
.admonition.versionadded,
.admonition.tip,
.admonition.hint {
background: #050;
}
.admonition.warning,
.admonition.versionchanged,
.admonition.deprecated {
background: #ec0;
}
.admonition.error,
.admonition.danger,
.admonition.caution {
background: #c20010;
}
p {
color: #fff;
}
</style>
<style media="screen and (min-width: 700px)">@media screen and (min-width:700px){#sidebar{width:30%;height:100vh;overflow:auto;position:sticky;top:0}#content{width:70%;max-width:100ch;padding:3em 4em;border-left:1px solid #ddd}pre code{font-size:1em}.item .name{font-size:1em}main{display:flex;flex-direction:row-reverse;justify-content:flex-end}.toc ul ul,#index ul{padding-left:1.5em}.toc > ul > li{margin-top:.5em}}</style>
<style media="print">@media print{#sidebar h1{page-break-before:always}.source{display:none}}@media print{*{background:transparent !important;color:#000 !important;box-shadow:none !important;text-shadow:none !important}a[href]:after{content:" (" attr(href) ")";font-size:90%}a[href][title]:after{content:none}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:0.5cm}p,h2,h3{orphans:3;widows:3}h1,h2,h3,h4,h5,h6{page-break-after:avoid}}</style>
<script defer src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.1.1/highlight.min.js" integrity="sha256-Uv3H6lx7dJmRfRvH8TH6kJD1TSK1aFcwgx+mdg3epi8=" crossorigin></script>
<script>window.addEventListener('DOMContentLoaded', () => hljs.initHighlighting())</script>
</head>
<body>
<main>
<article id="content">
<header>
<h1 class="title">Module <code>Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main</code></h1>
</header>
<section id="section-intro">
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">from plugins.plugin import PluginInformation
from src.logger import print

PluginInfo = PluginInformation(
    name=&#34;ThemeManager&#34;,
    description=&#34;Allows you to select and use different themes&#34;,
    version=&#34;0.1&#34;,
    author=&#34;DylDev&#34;,
    url=&#34;https://github.com/Tumppi066/Euro-Truck-Simulator-2-Lane-Assist&#34;,
    type=&#34;static&#34;
)


from src.loading import LoadingWindow
import tkinter as tk
from tkinter import ttk
import src.helpers as helpers
from src.mainUI import quit, switchSelectedPlugin
import src.variables as variables
import src.settings as settings
import os
from PIL import Image, ImageTk

class Theme():
    name = &#34;&#34;
    description = &#34;&#34;
    author = &#34;&#34;
    version = &#34;&#34;
    titlebar = &#34;&#34;
    base = &#34;&#34;

class UI():
    try:
        def findThemes(self):
            # Find themes
            print(&#34;Importing Themes...&#34;)
            path = os.path.join(variables.PATH, r&#34;themes&#34;)
            themes = []
            for folder in os.listdir(path):
                if os.path.isdir(os.path.join(path, folder)):
                    for file in os.listdir(os.path.join(path, folder)):
                        if file == &#34;themeTemplate.json&#34; or file == &#34;theme.json&#34;:
                            # Parse the json into the class
                            theme = Theme()
                            fileContent = open(os.path.join(path, folder, file), &#34;r&#34;).read()
                            import json
                            jsonContent = json.loads(fileContent)
                            theme.name = jsonContent[&#34;name&#34;]
                            theme.description = jsonContent[&#34;description&#34;]
                            theme.author = jsonContent[&#34;author&#34;]
                            theme.version = jsonContent[&#34;version&#34;]
                            theme.base = jsonContent[&#34;base&#34;].lower()
                            theme.titlebar = jsonContent[&#34;titlebar&#34;]
                            
                            themes.append(theme)
                               
            return themes
        

        
        def __init__(self, master) -&gt; None:
            self.done = False
            self.master = master
            self.page0()
        
        def destroy(self):
            self.done = True
            self.root.destroy()
            del self

        
        def page0(self):
            try:
                self.root.destroy()
            except: pass
            
            self.root = tk.Canvas(self.master, width=600, height=520, border=0, highlightthickness=0)
            self.root.grid_propagate(0)
            
            self.themes = self.findThemes()
            
            self.listVariable = tk.StringVar()
            self.listVariable.set([helpers.ConvertCapitalizationToSpaces(t.name) for t in self.themes])
            
            self.themeList = tk.Listbox(self.root, width=20, height=20, listvariable=self.listVariable, font=(&#34;Roboto&#34;, 12), selectmode=&#34;single&#34;, activestyle=&#34;none&#34;)
            self.themeList.grid(row=1, column=0, padx=10, pady=2)
            
            # helpers.MakeLabel(self.root, &#34;Select a theme to load:&#34;, 0,0, font=(&#34;Roboto&#34;, 8), padx=30, pady=10, columnspan=1)
            helpers.MakeButton(self.root, &#34;ThemeMaker&#34;, lambda: switchSelectedPlugin(&#34;plugins.ThemeMaker.main&#34;), 0,0, padx=30, pady=10, width=15)
            
            self.root.pack(anchor=&#34;center&#34;, expand=False)
            
            self.root.update()
        
        
        def selectedTheme(self, theme):
            try:
                self.themeInfoFrame.destroy()
            except:
                pass
            
            self.theme = theme
            
            print(&#34;Selected theme: &#34; + theme.name)
            
            self.themeInfoFrame = ttk.LabelFrame(self.root, text=theme.name, width=380, height=500)
            self.themeInfoFrame.pack_propagate(0)
            self.themeInfoFrame.grid_propagate(0)
            self.themeInfoFrame.grid(row=0, column=1, padx=10, pady=2, rowspan=3)

            helpers.MakeLabel(self.themeInfoFrame, theme.name, 0,0, font=(&#34;Roboto&#34;, 16, &#34;bold&#34;), padx=10, pady=10, columnspan=2, sticky=&#34;w&#34;)
                
            helpers.MakeLabel(self.themeInfoFrame, &#34;Description&#34;, 1,0, font=(&#34;Roboto&#34;, 12), padx=10, pady=10, columnspan=2, sticky=&#34;w&#34;)
            helpers.MakeLabel(self.themeInfoFrame, theme.description, 2,0, font=(&#34;Roboto&#34;, 8), padx=10, pady=2, columnspan=2, sticky=&#34;w&#34;)
            helpers.MakeLabel(self.themeInfoFrame, &#34;Author&#34;, 5,0, font=(&#34;Roboto&#34;, 12), padx=10, pady=10, columnspan=2, sticky=&#34;w&#34;)
            helpers.MakeLabel(self.themeInfoFrame, theme.author, 6,0, font=(&#34;Roboto&#34;, 8), padx=10, pady=2, columnspan=2, sticky=&#34;w&#34;)
            helpers.MakeLabel(self.themeInfoFrame, &#34;Version&#34;, 7,0, font=(&#34;Roboto&#34;, 12), padx=10, pady=10, columnspan=2, sticky=&#34;w&#34;)
            helpers.MakeLabel(self.themeInfoFrame, theme.version, 8,0, font=(&#34;Roboto&#34;, 8), padx=10, pady=2, columnspan=2, sticky=&#34;w&#34;)

            helpers.MakeButton(self.themeInfoFrame, &#34;Load theme&#34;, lambda: self.loadTheme(), 9, 0, width=15, padx=8)        

        def loadTheme(self):
            if self.theme.base == &#34;forest&#34;:
                import plugins.ThemeSelector.main as ThemeSelector
                ThemeSelector.ChangeThemeCustom(fr&#34;themes\{self.theme.name}\theme.tcl&#34;, self.master, self.theme.base, self.theme.name, self.theme.titlebar)
                
            pass
        
        def tabFocused(self):
            self.page0()
        
        def update(self, data):
            try:
                self.theme
            except:
                self.selectedTheme(self.themes[0])
            
            try:
                if self.themes[self.themeList.curselection()[0]].name != self.theme.name:
                    self.selectedTheme(self.themes[self.themeList.curselection()[0]])
            except:
                pass
                    
            self.root.update()
    
    except Exception as ex:
        print(ex.args)</code></pre>
</details>
</section>
<section>
</section>
<section>
</section>
<section>
</section>
<section>
<h2 class="section-title" id="header-classes">Classes</h2>
<dl>
<dt id="Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main.Theme"><code class="flex name class">
<span>class <span class="ident">Theme</span></span>
</code></dt>
<dd>
<div class="desc"></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">class Theme():
    name = &#34;&#34;
    description = &#34;&#34;
    author = &#34;&#34;
    version = &#34;&#34;
    titlebar = &#34;&#34;
    base = &#34;&#34;</code></pre>
</details>
<h3>Class variables</h3>
<dl>
<dt id="Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main.Theme.author"><code class="name">var <span class="ident">author</span></code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main.Theme.base"><code class="name">var <span class="ident">base</span></code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main.Theme.description"><code class="name">var <span class="ident">description</span></code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main.Theme.name"><code class="name">var <span class="ident">name</span></code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main.Theme.titlebar"><code class="name">var <span class="ident">titlebar</span></code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main.Theme.version"><code class="name">var <span class="ident">version</span></code></dt>
<dd>
<div class="desc"></div>
</dd>
</dl>
</dd>
<dt id="Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main.UI"><code class="flex name class">
<span>class <span class="ident">UI</span></span>
<span>(</span><span>master)</span>
</code></dt>
<dd>
<div class="desc"></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">class UI():
    try:
        def findThemes(self):
            # Find themes
            print(&#34;Importing Themes...&#34;)
            path = os.path.join(variables.PATH, r&#34;themes&#34;)
            themes = []
            for folder in os.listdir(path):
                if os.path.isdir(os.path.join(path, folder)):
                    for file in os.listdir(os.path.join(path, folder)):
                        if file == &#34;themeTemplate.json&#34; or file == &#34;theme.json&#34;:
                            # Parse the json into the class
                            theme = Theme()
                            fileContent = open(os.path.join(path, folder, file), &#34;r&#34;).read()
                            import json
                            jsonContent = json.loads(fileContent)
                            theme.name = jsonContent[&#34;name&#34;]
                            theme.description = jsonContent[&#34;description&#34;]
                            theme.author = jsonContent[&#34;author&#34;]
                            theme.version = jsonContent[&#34;version&#34;]
                            theme.base = jsonContent[&#34;base&#34;].lower()
                            theme.titlebar = jsonContent[&#34;titlebar&#34;]
                            
                            themes.append(theme)
                               
            return themes
        

        
        def __init__(self, master) -&gt; None:
            self.done = False
            self.master = master
            self.page0()
        
        def destroy(self):
            self.done = True
            self.root.destroy()
            del self

        
        def page0(self):
            try:
                self.root.destroy()
            except: pass
            
            self.root = tk.Canvas(self.master, width=600, height=520, border=0, highlightthickness=0)
            self.root.grid_propagate(0)
            
            self.themes = self.findThemes()
            
            self.listVariable = tk.StringVar()
            self.listVariable.set([helpers.ConvertCapitalizationToSpaces(t.name) for t in self.themes])
            
            self.themeList = tk.Listbox(self.root, width=20, height=20, listvariable=self.listVariable, font=(&#34;Roboto&#34;, 12), selectmode=&#34;single&#34;, activestyle=&#34;none&#34;)
            self.themeList.grid(row=1, column=0, padx=10, pady=2)
            
            # helpers.MakeLabel(self.root, &#34;Select a theme to load:&#34;, 0,0, font=(&#34;Roboto&#34;, 8), padx=30, pady=10, columnspan=1)
            helpers.MakeButton(self.root, &#34;ThemeMaker&#34;, lambda: switchSelectedPlugin(&#34;plugins.ThemeMaker.main&#34;), 0,0, padx=30, pady=10, width=15)
            
            self.root.pack(anchor=&#34;center&#34;, expand=False)
            
            self.root.update()
        
        
        def selectedTheme(self, theme):
            try:
                self.themeInfoFrame.destroy()
            except:
                pass
            
            self.theme = theme
            
            print(&#34;Selected theme: &#34; + theme.name)
            
            self.themeInfoFrame = ttk.LabelFrame(self.root, text=theme.name, width=380, height=500)
            self.themeInfoFrame.pack_propagate(0)
            self.themeInfoFrame.grid_propagate(0)
            self.themeInfoFrame.grid(row=0, column=1, padx=10, pady=2, rowspan=3)

            helpers.MakeLabel(self.themeInfoFrame, theme.name, 0,0, font=(&#34;Roboto&#34;, 16, &#34;bold&#34;), padx=10, pady=10, columnspan=2, sticky=&#34;w&#34;)
                
            helpers.MakeLabel(self.themeInfoFrame, &#34;Description&#34;, 1,0, font=(&#34;Roboto&#34;, 12), padx=10, pady=10, columnspan=2, sticky=&#34;w&#34;)
            helpers.MakeLabel(self.themeInfoFrame, theme.description, 2,0, font=(&#34;Roboto&#34;, 8), padx=10, pady=2, columnspan=2, sticky=&#34;w&#34;)
            helpers.MakeLabel(self.themeInfoFrame, &#34;Author&#34;, 5,0, font=(&#34;Roboto&#34;, 12), padx=10, pady=10, columnspan=2, sticky=&#34;w&#34;)
            helpers.MakeLabel(self.themeInfoFrame, theme.author, 6,0, font=(&#34;Roboto&#34;, 8), padx=10, pady=2, columnspan=2, sticky=&#34;w&#34;)
            helpers.MakeLabel(self.themeInfoFrame, &#34;Version&#34;, 7,0, font=(&#34;Roboto&#34;, 12), padx=10, pady=10, columnspan=2, sticky=&#34;w&#34;)
            helpers.MakeLabel(self.themeInfoFrame, theme.version, 8,0, font=(&#34;Roboto&#34;, 8), padx=10, pady=2, columnspan=2, sticky=&#34;w&#34;)

            helpers.MakeButton(self.themeInfoFrame, &#34;Load theme&#34;, lambda: self.loadTheme(), 9, 0, width=15, padx=8)        

        def loadTheme(self):
            if self.theme.base == &#34;forest&#34;:
                import plugins.ThemeSelector.main as ThemeSelector
                ThemeSelector.ChangeThemeCustom(fr&#34;themes\{self.theme.name}\theme.tcl&#34;, self.master, self.theme.base, self.theme.name, self.theme.titlebar)
                
            pass
        
        def tabFocused(self):
            self.page0()
        
        def update(self, data):
            try:
                self.theme
            except:
                self.selectedTheme(self.themes[0])
            
            try:
                if self.themes[self.themeList.curselection()[0]].name != self.theme.name:
                    self.selectedTheme(self.themes[self.themeList.curselection()[0]])
            except:
                pass
                    
            self.root.update()
    
    except Exception as ex:
        print(ex.args)</code></pre>
</details>
<h3>Methods</h3>
<dl>
<dt id="Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main.UI.destroy"><code class="name flex">
<span>def <span class="ident">destroy</span></span>(<span>self)</span>
</code></dt>
<dd>
<div class="desc"></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">def destroy(self):
    self.done = True
    self.root.destroy()
    del self</code></pre>
</details>
</dd>
<dt id="Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main.UI.findThemes"><code class="name flex">
<span>def <span class="ident">findThemes</span></span>(<span>self)</span>
</code></dt>
<dd>
<div class="desc"></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">def findThemes(self):
    # Find themes
    print(&#34;Importing Themes...&#34;)
    path = os.path.join(variables.PATH, r&#34;themes&#34;)
    themes = []
    for folder in os.listdir(path):
        if os.path.isdir(os.path.join(path, folder)):
            for file in os.listdir(os.path.join(path, folder)):
                if file == &#34;themeTemplate.json&#34; or file == &#34;theme.json&#34;:
                    # Parse the json into the class
                    theme = Theme()
                    fileContent = open(os.path.join(path, folder, file), &#34;r&#34;).read()
                    import json
                    jsonContent = json.loads(fileContent)
                    theme.name = jsonContent[&#34;name&#34;]
                    theme.description = jsonContent[&#34;description&#34;]
                    theme.author = jsonContent[&#34;author&#34;]
                    theme.version = jsonContent[&#34;version&#34;]
                    theme.base = jsonContent[&#34;base&#34;].lower()
                    theme.titlebar = jsonContent[&#34;titlebar&#34;]
                    
                    themes.append(theme)
                       
    return themes</code></pre>
</details>
</dd>
<dt id="Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main.UI.loadTheme"><code class="name flex">
<span>def <span class="ident">loadTheme</span></span>(<span>self)</span>
</code></dt>
<dd>
<div class="desc"></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">def loadTheme(self):
    if self.theme.base == &#34;forest&#34;:
        import plugins.ThemeSelector.main as ThemeSelector
        ThemeSelector.ChangeThemeCustom(fr&#34;themes\{self.theme.name}\theme.tcl&#34;, self.master, self.theme.base, self.theme.name, self.theme.titlebar)
        
    pass</code></pre>
</details>
</dd>
<dt id="Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main.UI.page0"><code class="name flex">
<span>def <span class="ident">page0</span></span>(<span>self)</span>
</code></dt>
<dd>
<div class="desc"></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">def page0(self):
    try:
        self.root.destroy()
    except: pass
    
    self.root = tk.Canvas(self.master, width=600, height=520, border=0, highlightthickness=0)
    self.root.grid_propagate(0)
    
    self.themes = self.findThemes()
    
    self.listVariable = tk.StringVar()
    self.listVariable.set([helpers.ConvertCapitalizationToSpaces(t.name) for t in self.themes])
    
    self.themeList = tk.Listbox(self.root, width=20, height=20, listvariable=self.listVariable, font=(&#34;Roboto&#34;, 12), selectmode=&#34;single&#34;, activestyle=&#34;none&#34;)
    self.themeList.grid(row=1, column=0, padx=10, pady=2)
    
    # helpers.MakeLabel(self.root, &#34;Select a theme to load:&#34;, 0,0, font=(&#34;Roboto&#34;, 8), padx=30, pady=10, columnspan=1)
    helpers.MakeButton(self.root, &#34;ThemeMaker&#34;, lambda: switchSelectedPlugin(&#34;plugins.ThemeMaker.main&#34;), 0,0, padx=30, pady=10, width=15)
    
    self.root.pack(anchor=&#34;center&#34;, expand=False)
    
    self.root.update()</code></pre>
</details>
</dd>
<dt id="Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main.UI.selectedTheme"><code class="name flex">
<span>def <span class="ident">selectedTheme</span></span>(<span>self, theme)</span>
</code></dt>
<dd>
<div class="desc"></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">def selectedTheme(self, theme):
    try:
        self.themeInfoFrame.destroy()
    except:
        pass
    
    self.theme = theme
    
    print(&#34;Selected theme: &#34; + theme.name)
    
    self.themeInfoFrame = ttk.LabelFrame(self.root, text=theme.name, width=380, height=500)
    self.themeInfoFrame.pack_propagate(0)
    self.themeInfoFrame.grid_propagate(0)
    self.themeInfoFrame.grid(row=0, column=1, padx=10, pady=2, rowspan=3)

    helpers.MakeLabel(self.themeInfoFrame, theme.name, 0,0, font=(&#34;Roboto&#34;, 16, &#34;bold&#34;), padx=10, pady=10, columnspan=2, sticky=&#34;w&#34;)
        
    helpers.MakeLabel(self.themeInfoFrame, &#34;Description&#34;, 1,0, font=(&#34;Roboto&#34;, 12), padx=10, pady=10, columnspan=2, sticky=&#34;w&#34;)
    helpers.MakeLabel(self.themeInfoFrame, theme.description, 2,0, font=(&#34;Roboto&#34;, 8), padx=10, pady=2, columnspan=2, sticky=&#34;w&#34;)
    helpers.MakeLabel(self.themeInfoFrame, &#34;Author&#34;, 5,0, font=(&#34;Roboto&#34;, 12), padx=10, pady=10, columnspan=2, sticky=&#34;w&#34;)
    helpers.MakeLabel(self.themeInfoFrame, theme.author, 6,0, font=(&#34;Roboto&#34;, 8), padx=10, pady=2, columnspan=2, sticky=&#34;w&#34;)
    helpers.MakeLabel(self.themeInfoFrame, &#34;Version&#34;, 7,0, font=(&#34;Roboto&#34;, 12), padx=10, pady=10, columnspan=2, sticky=&#34;w&#34;)
    helpers.MakeLabel(self.themeInfoFrame, theme.version, 8,0, font=(&#34;Roboto&#34;, 8), padx=10, pady=2, columnspan=2, sticky=&#34;w&#34;)

    helpers.MakeButton(self.themeInfoFrame, &#34;Load theme&#34;, lambda: self.loadTheme(), 9, 0, width=15, padx=8)        </code></pre>
</details>
</dd>
<dt id="Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main.UI.tabFocused"><code class="name flex">
<span>def <span class="ident">tabFocused</span></span>(<span>self)</span>
</code></dt>
<dd>
<div class="desc"></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">def tabFocused(self):
    self.page0()</code></pre>
</details>
</dd>
<dt id="Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main.UI.update"><code class="name flex">
<span>def <span class="ident">update</span></span>(<span>self, data)</span>
</code></dt>
<dd>
<div class="desc"></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">def update(self, data):
    try:
        self.theme
    except:
        self.selectedTheme(self.themes[0])
    
    try:
        if self.themes[self.themeList.curselection()[0]].name != self.theme.name:
            self.selectedTheme(self.themes[self.themeList.curselection()[0]])
    except:
        pass
            
    self.root.update()</code></pre>
</details>
</dd>
</dl>
</dd>
</dl>
</section>
</article>
<nav id="sidebar">
<h1>Index</h1>
<div class="toc">
<ul></ul>
</div>
<ul id="index">
<li><h3>Super-module</h3>
<ul>
<li><code><a title="Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager" href="index.html">Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager</a></code></li>
</ul>
</li>
<li><h3><a href="#header-classes">Classes</a></h3>
<ul>
<li>
<h4><code><a title="Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main.Theme" href="#Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main.Theme">Theme</a></code></h4>
<ul class="two-column">
<li><code><a title="Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main.Theme.author" href="#Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main.Theme.author">author</a></code></li>
<li><code><a title="Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main.Theme.base" href="#Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main.Theme.base">base</a></code></li>
<li><code><a title="Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main.Theme.description" href="#Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main.Theme.description">description</a></code></li>
<li><code><a title="Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main.Theme.name" href="#Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main.Theme.name">name</a></code></li>
<li><code><a title="Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main.Theme.titlebar" href="#Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main.Theme.titlebar">titlebar</a></code></li>
<li><code><a title="Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main.Theme.version" href="#Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main.Theme.version">version</a></code></li>
</ul>
</li>
<li>
<h4><code><a title="Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main.UI" href="#Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main.UI">UI</a></code></h4>
<ul class="two-column">
<li><code><a title="Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main.UI.destroy" href="#Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main.UI.destroy">destroy</a></code></li>
<li><code><a title="Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main.UI.findThemes" href="#Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main.UI.findThemes">findThemes</a></code></li>
<li><code><a title="Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main.UI.loadTheme" href="#Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main.UI.loadTheme">loadTheme</a></code></li>
<li><code><a title="Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main.UI.page0" href="#Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main.UI.page0">page0</a></code></li>
<li><code><a title="Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main.UI.selectedTheme" href="#Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main.UI.selectedTheme">selectedTheme</a></code></li>
<li><code><a title="Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main.UI.tabFocused" href="#Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main.UI.tabFocused">tabFocused</a></code></li>
<li><code><a title="Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main.UI.update" href="#Euro-Truck-Simulator-2-Lane-Assist.plugins.ThemeManager.main.UI.update">update</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</nav>
</main>
<footer id="footer">
<p>Generated by <a href="https://pdoc3.github.io/pdoc"><cite>pdoc</cite> 0.10.0</a>.</p>
</footer>
</body>
</html>